Вы - -й посетитель этой странички
Расчет движения небесных тел
О.В. Туркин, Москва
Время от времени в средствах массовой информации появляются сообщения о небесных телах, которые могут столкнуться с Землей, что приведет к катастрофическим последствиям. Попробуем построить модель движения небесного тела и рассчитать, при каких параметрах могут наступить печальные последствия для нашей планеты, тем более что метод расчета уже знаком (см. "Информатику" № 17/2001).
Итак, сначала физическая модель. Земля (или другая планета) массой М находится в центре системы координат XOY (Х0= 0, У0= 0), а небесное тело (астероид) массой т находится на расстоянии г от Земли и имеет координаты х и у. Астероид притягивается к Земле в соответствии с законом всемирного тяготения с силой
где у = 6,67 o 10-11 H o м2/кг2 - гравитационная постоянная. Эта сила вызывает ускорение тела а согласно закону Ньютона
Определив ускорение, можно определить скорость тела, координату и, стало быть, рассчитать траекторию "опасного соседа". Правда, существуют и определенные трудности. Во-первых, ускорение тела не постоянно, а зависит от расстояния между телами, и, во-вторых, расчет проводится в двухмерной системе координат. Попробуем, как и раньше, применить электронную таблицу Excel для пошагового вычисления.
Напомним, что суть этого метода сводится к следующему. Пусть известны начальные координаты и скорость астероида. Тогда, определив ускорение, вычислим новую скорость и новые координаты через малый промежуток времени Dt, когда изменением ускорения можно пренебречь. Теперь уже для новых координат и новой скорости повторяем тот же процесс и т.д. Основная проблема - выбор промежутка времени Dt. В этом и состоит одна из задач исследования модели, которую мы будем использовать для расчета. Для нахождения скорости и координат нам потребуются еще две формулы:
Индекс п означает новое значение величины, а жирным шрифтом обозначены векторные величины. Кроме того, запишем формулы (1) и (2) в векторном виде
Объединив две последние формулы, получаем выражение для вычисления ускорения
Как видим, даже не требуется знать массу астероида. Преобразуем (3) - (6) для расчета в координатах XOY (рис. 1). Следует обратить внимание, что из-за разно направленности векторов r и а в формулах (9) и (10) появляется знак "-".
рис. 1
Теперь можно приступать к оформлению расчетов в электронной таблице (ЭТ).
Сначала оформим область постоянных величин - М, у, произведения g = М. o y, а также промежутка времени Dt. Понятно, что массу планеты и значение временного промежутка можно менять. В обучающих целях ячейкам, где будут находиться постоянные величины, присвоим имена, используя текст в строке сверху ("Меню Вставка Имя | Создать | в строке выше"). В табл. 1 представлено соответствующее оформление для планеты Земля и промежутка времени 5 секунд. Договоримся, что будем использовать систему СИ: масса измеряется в килограммах, расстояние - в метрах, время - в секундах и т.д.
Обратите внимание, что в ячейке С2 записана формула для определения g, в которой используются ссылки на имена соответствующих ячеек.
Следующий шаг - оформление начальных значений координат и скорости астероида.
Здесь также в первой строке запишем заголовки столбцов, а во второй - введем произвольные начальные значения.
Все готово к оформлению вычислений значений аx , аy, vnx , vny , хn , уn , rn по формулам (9) - (14), (8) и организации многократного расчета. С этой целью один столбец выделим для значения времени (заголовок "ttt"). Кроме того, определим и столбцы для других величин. Заполнение таблицы начнем с третьей строки (см. табл. 3).
Отметим, что при большом количестве строк могут возникнуть сложности при построении диаграммы-графика, но, с другой стороны, это позволяет исследовать больший временной диапазон. Мы остановились на 4000-й строке.
Осталось построить диаграмму. Выделяем ячейки в столбцах, содержащие значения х и у, и строим точечный график. На него в центр координат помещается изображение окружности, так, чтобы ее размеры соответствовали размерам планеты в масштабе диаграммы. Чтобы изображение на диаграмме "не прыгало" при изменении исходных данных, рекомендуем установить максимальное и минимальное значения шкалы для обеих осей 30 000 000 и -30 000 000 соответственно. Напомним, что для Земли радиус равен б 400 000 м.
Вообще необходимо отметить, что определенная фантазия и знание свойств диаграмм позволяет превратить график в очень красивую картинку, по которой не сразу и признаешь диаграмму электронной таблицы.
Теперь, изменяя начальные параметры, можно наблюдать различные траектории движения небесных тел. На рис. 2-4 представлены варианты траектории астероида при движении в поле тяготения Земли для различных начальных скоростей. Как видим, вполне возможен случай, когда траектория пересечет изображение планеты.
Базовая модель построена без использования какого-либо языка программирования, и теперь с помощью языка программирования VBA можно добавить различные эффекты.
Сначала создадим движущуюся картинку. Для этого во вторые строки столбцов М и N скопируем значения начальных величин координат астероида из ячеек J2 и К2. После этого организуем еще одну диаграмму, аналогичную первой, но только в качестве ряда данных для Y укажем диапазон N2: N4000, а для Х - М2:М4000. В центре диаграммы также разместим изображение планеты в соответствии с масштабом и установим фиксированные максимальные и минимальные значения шкалы для обеих осей. Пока диаграмма не показывает траектории, потому что все ячейки указанного диапазона, за исключением второй строки, пусты.
Составим небольшую программку по переносу значений из столбцов J и К (их номера - 10 и 11) в столбцы M и N (13 и 14). Начнем со 2-й строки, а закончим на последней заполненной. Но последняя заполненная строка может быть выбрана произвольно, поэтому необходимо знать ее номер. Для этого используем функцию СЧЕТЗ, которая подсчитывает количество заполненных значений в указанном диапазоне.
Подсчитаем число заполненных значений в столбце к, а для этого в ячейку 01 впишем формулу =СЧЕТЗ(К:К). Программа будет запускаться при нажатии на командную кнопку CommandButton. Используя панель элементов управления, размещаем элемент "Кнопка" (CommandButton) на рабочем листе и через двойной щелчок по кнопке переходим в окно кодов. В модуле для Листа1 в процедуре Private Sub CommandButtonl_Click () запишем следующие строчки
Теперь достаточно выйти из конструктора и нажать на созданную нами кнопку, чтобы программа заработала. Здесь важно сделать следующее замечание - скорость появления траектории во многом будет определяться возможностями системы и количеством графических элементов, нанесенных на диаграмму. Для ускорения процесса следует запускать команду DoEvents не в каждом шаге цикла, а, скажем, лишь на каждом двадцатом: If k Mod 20 = 0 Then DoEvents.
Полученную модель полезно дополнить и полосами прокрутки, с помощью которых можно изменять начальные параметры астероида. В качестве примера создадим полосу прокрутки для изменения начального значения х. Правда, свойства полосы позволяют устанавливать значения лишь от 0 до 32 767. Мы же хотим изменять х, например, от -30 000 000 до 30 000 000. Следовательно, необходимо сконструировать формулу для пересчета значений х в зависимости от t: при изменении t в диапазоне от t1 = 0 до t2 = 30 000 должно меняться от х1 = -30 000 000 до х2= 30 000 000.
Используем следующее соотношение
Подставив соответствующие значения, получаем результат: х = 2000t - 30 000 000.
Итак, в качестве ячейки, где будет находиться параметр t, выберем ячейку 02, в которую поместим любое допустимое для t значение, например, 500. Из панели элементов управления извлекаем полосу прокрутки (ScrollBar), размещаем ее на рабочем листе и, оставляя эту полосу выделенной, открываем окно свойств. В окне свойств в строке min устанавливаем 0, а в строке max - 30 000, в качестве ячейки связи в строке LinkedCell указываем 02. В ячейке J2 вместо начальной координаты размещаем формулу =2000*02-30000000. Теперь, если при отключенном конструкторе перемещать ползунок полосы, можно изменять начальное значение х. Точно так же можно создать полосы прокрутки и для остальных начальных параметров.
При создании этой модели имеет смысл познакомиться с таким элементом управления, как "Поле со списком" (ComboBox). Этот элемент позволяет из списка данных выбрать один. Он нужен для того, чтобы обеспечить выбор планеты. Важно, что при этом изменяется масса планеты, которая находится в ячейке А2. Для большей наглядности составим список планет (блок Р1:Р9) и выразим их массы через массу Земли (блок Ql: Q9 ). Этот список представлен в табл. 4.
Оформив список, включаем режим конструктора, размещаем на рабочем листе элемент "Поле со списком" и начинаем работать в окне свойств. Сначала определим, из какой области будем брать значения для этого элемента управления. Так как мы уже заготовили список планет, то в свойстве List illRange укажем P1:Q9. При работе со списком хотелось бы видеть два столбца, значит, свойству ColumnCount (количество отображаемых столбцов) присваиваем значение 2. Поскольку при выборе строки для вычислений используется значение, взятое из второго столбца (относительная масса планеты), то свойству BoundColumn также присваивается значение 2. Кроме того, этому элементу управления нужно указать ту ячейку, в которую он отправит выбранную нами величину. Пусть это будет ячейка S1. Это значение помещаем в строку, соответствующую свойству LinkedCell.
Выключив элемент управления, проверим работу вновь созданного элемента. При выборе какой-либо планеты в ячейке S1 должно появляться соответствующее значение относительной массы. Теперь это значение необходимо умножить на массу Земли. Для этого в ячейку А1 помещаем формулу =6E+24*S1. Если все сделано правильно, то при выборе планеты в таблице будет происходить изменение массы и соответствующий перерасчет. Можно поменять и другие свойства созданного нами элемента управления для придания ему необходимого внешнего вида.
Итак, создана модель, пригодная для работы как на уроках информатики, так и на уроках физики и астрономии. Направления дальнейшего исследования могут быть следующими:
Как видим, использование возможностей электронной таблицы, элементов языка VBA, свойств диаграмм и элементарных численных методов позволяет получать модели, пригодные для использования в различных предметных областях. На основе рассмотренной базовой модели ученик нашей школы Андрей Кузьмичев, ныне студент первого курса Бауманского университета, создал очень красивую модель, учитывающую гораздо больше сведений по астрономии и физике небесных тел. Эта программа получила признание на окружных конференциях, и сведения о ней представлены на сайте нашей школы: http://schools.keldysh.ru/col678/.